﻿using System;
using System.Data;
using System.Windows.Forms;

namespace Gestión_UTN.View.general
{
    public partial class Alumnos : Form
    {
        private static Gestión_UTN.bl.alumnobl createAlumno = Gestión_UTN.factories.blfactory.createAlumno();

        private static int dni;

        public Alumnos()
        {
            InitializeComponent();
        }

        private void ListadoAlumnos_Load(object sender, EventArgs e)
        {
            DataTable alumnos = createAlumno.FindAllAlumnos();

            if (null != alumnos)
            {
                string[] filtros = { "DNI", "Nombre", "Apellido", "Legajo" };

                this.tscmbFiltro.Items.AddRange(filtros);

                this.tscmbFiltro.Text = "Filtrar por...";

                this.bsource.DataSource = alumnos;
                this.navegador.BindingSource = this.bsource;
                this.dgvAlumnos.DataSource = this.bsource;

                this.dgvAlumnos.Columns[0].HeaderText = "DNI";
                this.dgvAlumnos.Columns[1].HeaderText = "Nombre";
                this.dgvAlumnos.Columns[2].HeaderText = "Apellido";
                this.dgvAlumnos.Columns[3].HeaderText = "Fecha de Nacimiento";
                this.dgvAlumnos.Columns[4].HeaderText = "Dirección";
                this.dgvAlumnos.Columns[5].HeaderText = "Ciudad";
                this.dgvAlumnos.Columns[6].HeaderText = "Legajo";
                this.dgvAlumnos.Columns[7].HeaderText = "Teléfono Principal";
                this.dgvAlumnos.Columns[8].HeaderText = "Teléfono Auxiliar";
                this.dgvAlumnos.Columns[9].HeaderText = "Correo Principal";
                this.dgvAlumnos.Columns[10].HeaderText = "Correo Auxiliar";
            }
            else
            {
                MessageBox.Show("Error al Cargar!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                this.Close();

                this.Dispose();
            }
        }

        private void btnExportar_Click(object sender, EventArgs e)
        {
            try
            {
                Gestión_UTN.util.Herramientas.exportarAExcel(dgvAlumnos, "Alumnos");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Exportar!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
        {
            Gestión_UTN.View.alta.AltaAlumno alta = new alta.AltaAlumno();

            if (alta.ShowDialog() == DialogResult.OK)
            {
                refreshData();
            }
        }

        private void refreshData()
        {
            DataTable alumnos = createAlumno.FindAllAlumnos();

            if (null != alumnos)
            {
                this.bsource.DataSource = alumnos;
                this.navegador.BindingSource = this.bsource;
                this.dgvAlumnos.DataSource = this.bsource;

                this.dgvAlumnos.Columns[0].HeaderText = "DNI";
                this.dgvAlumnos.Columns[1].HeaderText = "Nombre";
                this.dgvAlumnos.Columns[2].HeaderText = "Apellido";
                this.dgvAlumnos.Columns[3].HeaderText = "Fecha de Nacimiento";
                this.dgvAlumnos.Columns[4].HeaderText = "Dirección";
                this.dgvAlumnos.Columns[5].HeaderText = "Ciudad";
                this.dgvAlumnos.Columns[6].HeaderText = "Legajo";
                this.dgvAlumnos.Columns[7].HeaderText = "Teléfono Principal";
                this.dgvAlumnos.Columns[8].HeaderText = "Teléfono Auxiliar";
                this.dgvAlumnos.Columns[9].HeaderText = "Correo Principal";
                this.dgvAlumnos.Columns[10].HeaderText = "Correo Auxiliar";
            }
            else
            {
                MessageBox.Show("Error al Cargar!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                this.Close();

                this.Dispose();
            }
        }

        private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult resp = MessageBox.Show("¿Desea Eliminar el Alumno?", "Eliminar Alumno", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (resp == System.Windows.Forms.DialogResult.Yes)
                {
                    if (this.dgvAlumnos.CurrentRow != null)
                    {
                        bool eliminado = createAlumno.DeleteAlumno(Convert.ToInt32(this.dgvAlumnos.CurrentRow.Cells[0].Value.ToString()));

                        if (eliminado)
                        {
                            MessageBox.Show("Alumno Eliminado!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            refreshData();
                        }
                        else
                        {
                            MessageBox.Show("Error al Intentar Eliminar!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Seleccione un Alumno!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }

                }
            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Eliminar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Eliminar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void tsbtnModificar_Click(object sender, EventArgs e)
        {
            try
            {
                if (0 != dni)
                {
                    bo.Alumnobo alumno = new bo.Alumnobo();

                    alumno.Activo = true;

                    alumno.Apellido = this.dgvAlumnos.CurrentRow.Cells[2].Value.ToString();

                    alumno.Ciudad = this.dgvAlumnos.CurrentRow.Cells[5].Value.ToString();

                    alumno.Direccion = this.dgvAlumnos.CurrentRow.Cells[4].Value.ToString();

                    alumno.Dni = Convert.ToInt32(this.dgvAlumnos.CurrentRow.Cells[0].Value.ToString());

                    alumno.FechaNac = Convert.ToDateTime(this.dgvAlumnos.CurrentRow.Cells[3].Value.ToString());

                    alumno.Legajo = this.dgvAlumnos.CurrentRow.Cells[6].Value.ToString();

                    alumno.Nombre = this.dgvAlumnos.CurrentRow.Cells[1].Value.ToString();

                    alumno.Tel_principal = this.dgvAlumnos.CurrentRow.Cells[7].Value.ToString();

                    alumno.Tel_auxiliar = this.dgvAlumnos.CurrentRow.Cells[8].Value.ToString();

                    alumno.Mail_principal = this.dgvAlumnos.CurrentRow.Cells[9].Value.ToString();

                    alumno.Mail_principal = this.dgvAlumnos.CurrentRow.Cells[10].Value.ToString();

                    bool modificado = createAlumno.ModifyAlumno(dni, alumno);

                    if (modificado)
                    {
                        MessageBox.Show("Alumno Modificado!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        refreshData();
                    }
                    else
                    {
                        MessageBox.Show("Error al Intentar Modificar!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Modificar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Modificar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void dgvAlumnos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (this.dgvAlumnos.CurrentRow != null)
            {
                dni = Convert.ToInt32(this.dgvAlumnos.CurrentRow.Cells[0].Value.ToString());

            }
        }

        private void tstxtFiltro_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(tstxtFiltro.Text.Trim()))
                {
                    this.bsource.RemoveFilter();
                    return;
                }

                if (tscmbFiltro.Text.Equals("DNI"))
                {
                    this.bsource.Filter = "CONVERT(alu_dni,System.String) LIKE '%" + tstxtFiltro.Text + "%'";
                }
                else if (tscmbFiltro.Text.Equals("Nombre"))
                {
                    this.bsource.Filter = "alu_nombre LIKE '%" + tstxtFiltro.Text + "%'";
                }
                else if (tscmbFiltro.Text.Equals("Apellido"))
                {
                    this.bsource.Filter = "alu_apellido LIKE '%" + tstxtFiltro.Text + "%'";
                }
                else if (tscmbFiltro.Text.Equals("Legajo"))
                {
                    this.bsource.Filter = "CONVERT(alu_legajo,System.String) LIKE '%" + tstxtFiltro.Text + "%'";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al aplicar el filtro!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }
    }
}
